package cn.dj.pet.service;

import cn.dj.basic.util.AjaxResult;
import cn.dj.basic.util.PageList;
import cn.dj.pet.domain.SearchMasterMsg;
import cn.dj.basic.service.BaseService;
import cn.dj.pet.dto.MsgDto;
import cn.dj.pet.query.SearchMasterMsgQuery;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 *  服务类：寻主消息
 * </p>
 *
 * @author dj
 * @since 2023-02-20
 */
public interface ISearchMasterMsgService extends BaseService<SearchMasterMsg> {

    /**
     * 发布寻主消息
     * @param msg
     * @param request
     * @return
     */
    AjaxResult publish(SearchMasterMsg msg, HttpServletRequest request);

    /**
     * 用户查询自己所有的寻主消息 - 不需要区分平台管理员和店铺管理员
     * @param query
     * @param request
     * @return
     */
    PageList<SearchMasterMsg> user(SearchMasterMsgQuery query, HttpServletRequest request);

    /**
     * 管理员查询已经完成的寻主消息 - 需要区分平台管理员和店铺管理员
     * @param query
     * @param request
     * @return
     */
    PageList<SearchMasterMsg> finish(SearchMasterMsgQuery query, HttpServletRequest request);

    /**
     * 管理员查看寻主池中的寻主消息 - 不需要区分平台管理员和店铺管理员
     * @param query
     * @param request
     * @return
     */
    PageList<SearchMasterMsg> toSearchMasterPool(SearchMasterMsgQuery query, HttpServletRequest request);
    /**
     * 管理员查询待处理的寻主消息 - 需要区分平台管理员和店铺管理员
     * @param query
     * @param request
     * @return
     */
    PageList<SearchMasterMsg> toHandle(SearchMasterMsgQuery query, HttpServletRequest request);

    /**
     * 拒单：寻主消息已经分配给某一个店铺。店铺因为某一些原因不想接单
     * @param id
     * @return
     */
    void reject(Long id);

    /**
     * 接单
     * @param msgDto
     */
    void accept(MsgDto msgDto);
}
